home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-01-09 | 2.2 KB | 107 lines | [TEXT/ttxt] |
- {$R-}
-
- {$S HyperSound } { Segment name must be the same as the command name. }
-
- UNIT DummyUnit;
-
- INTERFACE
-
- USES MemTypes, QuickDraw, OSIntf, toolIntf, hyperxcmd;
-
- PROCEDURE ENTRYPOINT(paramPtr: XCmdPtr);
-
- IMPLEMENTATION
-
- TYPE Str31 = String[31];
-
- PROCEDURE HyperSnd(paramPtr: XCmdPtr); FORWARD;
-
- PROCEDURE ENTRYPOINT(paramPtr: XCmdPtr);
- BEGIN
- HyperSnd(paramPtr);
- END;
-
- PROCEDURE HyperSnd(paramPtr: XCmdPtr);
- TYPE
- T1 = RECORD
- Typ: Integer;
- Sz: Integer;
- F: ARRAY [1..100] OF RECORD
- Typ: Integer;
- Modi: LongInt;
- END;
- END;
- T2 = RECORD
- Sz: Integer;
- F: ARRAY [1..100] OF RECORD
- Cmd: Integer;
- Mod1: Integer;
- Mod2: LongInt;
- END;
- END;
-
- P1 = ^T1;
- P2 = ^T2;
- H1 = ^P1;
- VAR Res: H1;
- Ps: P2;
- i,j: Integer;
- ch: boolean;
- iff: longint;
- uff: integer;
- BEGIN
- i := 0;
- while true do begin
- ch := false;
- uff := 0;
- i := i+1;
- handle(res) := get1indresource ('snd ', i);
- if res = nil then exit(hypersnd);
- if (res^^.typ = 1) OR (res^^.typ = 2) then begin
- IF Res^^.Typ = 1 then begin
- res^^.Typ := 2;
- uff := uff - 6*res^^.sz;
- iff := munger (handle(res), 4, nil, 6*res^^.sz, @iff, 0);
- res^^.Sz := 0;
- ch := true;
- end;
- hLock(handle(res));
- ptr(Ps) := ptr(ord4(res^)+4+6*res^^.sz);
- if (ps^.sz = 1) and (ps^.f[1].cmd = $8051) then begin
- ps^.f[1].cmd := $8050;
- ch := true;
- end
- else if (ps^.sz = 2) & (ps^.f[2].cmd = 40) &
- ((ps^.f[1].cmd = $8050) | (ps^.f[1].cmd = $8050)) then begin
- hUnlock(handle(res));
- iff := munger (handle(res), 6+6*res^^.sz+8, nil, 8, @iff, 0);
- hLock(handle(res));
- ptr(Ps) := ptr(ord4(res^)+4+6*res^^.sz);
- uff := uff-8;
- ps^.sz := ps^.sz-1;
- ch := true;
- end;
- for j := 1 to ps^.sz do
- if ps^.f[j].cmd < 0 then begin
- ch := true;
- ps^.f[j].Mod2 := ps^.f[j].Mod2 + uff;
- end;
- hUnlock(handle(res));
- if ch then begin
- changedresource(handle(res));
- writeresource(handle(res));
- end;
- end;
- end;
- END;
-
-
- END.
-
-
-
- (* compile and link:
- pascal HyperSnd.p -i "{XCMDs}"
- link -o 80:HyperSound -rt XCMD=0 -sn Main=HyperSound -m ENTRYPOINT HyperSnd.p.o {libraries}interface.o
- *)
-